import 'dart:async';
import 'dart:isolate';

import 'package:flutter/foundation.dart';

void testMicroTask() {
  // 方式一
  scheduleMicrotask(() {
    print("我是一条微任务！");
  });
// 方式二
  Future.microtask(() => print("我是另一条微任务！"));
}

void testCompute() async{
  int result = await compute(powerNum, 5);
  print(result);
}

int powerNum(int num) {
  return num * num;
}

void testFuture() {
  Future a = Future(() => print("aaa"));
  Future b = Future(() => null);

  a.then((value) => print("bbb"));
  b.then((value) => print("ccc"));

  print("ddd");
}

// 耗时计算部分
int fibonacci(int n) {
  return n < 2 ? n : fibonacci(n - 2) + fibonacci(n - 1);
}

// 1. 计算任务
void task1(int start) {
  DateTime startTime = DateTime.now();
  int result = fibonacci(start);
  DateTime endTime = DateTime.now();
  print("计算耗时：${endTime.difference(startTime)}  结果：${result.toString()}");
}
// void main() {
//   task1(50);
// }
// 输出：计算耗时：0:00:48.608656  结果：12586269025

void main() async {
  // testFuture();
  Isolate newIsolate = await Isolate.spawn(task1,10,debugName: "isolateDebug");
  print("结束！");
}
